home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / mus / play / tracker_3_19.lzh / tracker / dump_song.c < prev    next >
C/C++ Source or Header  |  1993-11-17  |  3KB  |  152 lines

  1. /* dump_song.c */
  2.  
  3. /* $Id: dump_song.c,v 3.7 1993/11/17 15:31:16 espie Exp espie $
  4.  * $Log: dump_song.c,v $
  5.  * Revision 3.7  1993/11/17  15:31:16  espie
  6.  * *** empty log message ***
  7.  *
  8.  * Revision 3.6  1993/11/11  20:00:03  espie
  9.  * Amiga support.
  10.  *
  11.  * Revision 3.5  1993/04/28  20:13:13  espie
  12.  * Very small bug with volume (Lawrence).
  13.  *
  14.  * Revision 3.4  1993/04/25  14:08:15  espie
  15.  * Added finetune display.
  16.  *
  17.  * Revision 3.3  1993/01/15  14:00:28  espie
  18.  * Added bg/fg test.
  19.  *
  20.  * Revision 3.1  1992/11/19  20:44:47  espie
  21.  * Protracker commands.
  22.  *
  23.  * Revision 3.0  1992/11/18  16:08:05  espie
  24.  * New release.
  25.  */
  26.  
  27. #ifdef AMIGA
  28. #include <stdlib.h>
  29. #else
  30. #include <malloc.h>
  31. #endif
  32. #include <stdio.h>
  33. #include <string.h>
  34. #include <ctype.h>
  35.  
  36. #include "defs.h"
  37. #include "extern.h"
  38. #include "song.h"
  39. #include "channel.h"
  40.  
  41. LOCAL char *id = "$Id: dump_song.c,v 3.7 1993/11/17 15:31:16 espie Exp espie $";
  42.  
  43. /***
  44.  *
  45.  *  dump_block/dump_song:
  46.  *  shows most of the readable info
  47.  *  concerning a module on the screen.
  48.  *
  49.  ***/
  50.  
  51. LOCAL void dump_block(b)
  52. struct block *b;
  53.     {
  54.     int i, j;
  55.  
  56.     for (i = 0; i < BLOCK_LENGTH; i++)
  57.         {
  58.         for (j = 0; j < NUMBER_TRACKS; j++)
  59.             {
  60.             printf("%8d%5d%2d%4d", b->e[j][i].sample_number,
  61.                 b->e[j][i].pitch, b->e[j][i].effect,
  62.                 b->e[j][i].parameters);
  63.             }
  64.         printf("\n");
  65.         }
  66.     }
  67.  
  68. /* make_readable(s):
  69.  * transform s into a really readable string */
  70.  
  71. LOCAL void make_readable(s)
  72. char *s;
  73.     {
  74.     char *t, *orig;
  75.  
  76.     if (!s)
  77.         return;
  78.  
  79.     orig = s;
  80.     t = s;
  81.  
  82.         /* get rid of the st-xx: junk */
  83.     if (strncmp(s, "st-", 3) == 0 || strncmp(s, "ST-", 3) == 0)
  84.         {
  85.         if (isdigit(s[3]) && isdigit(s[4]) && s[5] == ':')
  86.             s += 6;
  87.         }
  88.     while (*s)
  89.         {
  90.         if (isprint(*s))
  91.             *t++ = *s;
  92.         s++;
  93.         }
  94.     *t = '\0';
  95.     while (t != orig && isspace(t[-1]))
  96.         *--t = '\0';
  97.     }
  98.  
  99. void dump_song(song)
  100. struct song *song;
  101.     {
  102.     int i, j;
  103.     int maxlen;
  104.     static char dummy[1];
  105.  
  106.     if (!run_in_fg())
  107.         return;
  108.     dummy[0] = '\0';
  109.     printf("%s\n", song->title);
  110.  
  111.     maxlen = 0;
  112.     for (i = 1; i < NUMBER_SAMPLES; i++)
  113.         {
  114.         if (!song->samples[i].name)
  115.             song->samples[i].name = dummy;
  116.         make_readable(song->samples[i].name);
  117.         if (maxlen < strlen(song->samples[i].name))
  118.             maxlen = strlen(song->samples[i].name);
  119.         }
  120.     for (i = 1; i < NUMBER_SAMPLES; i++)
  121.         {
  122.         if (song->samples[i].start || strlen(song->samples[i].name) > 2)
  123.             {
  124. #ifdef SHOW_SEQ
  125.             printf("%2d", i);
  126. #endif
  127.             printf("   %s", song->samples[i].name);
  128.             for (j = strlen(song->samples[i].name); j < maxlen + 2; j++)
  129.                 putchar(' ');
  130.             if (song->samples[i].start)
  131.                 {
  132.                 printf("%5d", song->samples[i].length);
  133.                 if (song->samples[i].rp_length > 2)
  134.                     {
  135.                     printf("(%5d %5d)", song->samples[i].rp_offset, 
  136.                         song->samples[i].rp_length);
  137.                     }
  138.                 else
  139.                     printf("             ");
  140.                 if (song->samples[i].volume != MAX_VOLUME)
  141.                     printf("%3d", song->samples[i].volume);
  142.                 else 
  143.                     printf("   ");
  144.                 if (song->samples[i].finetune)
  145.                     printf("%3d", song->samples[i].finetune);
  146.                 }
  147.             putchar('\n');
  148.             }
  149.         }
  150.     fflush(stdout);
  151.     }
  152.